/**
 * 
 */
package ltmt.test.main;

import java.util.ArrayList;
import java.util.List;

import com.ltmt.es.generator.PrimitivaGenerator;
import com.ltmt.es.persistence.utils.SpringDataUtil;
import com.ltmt.es.pojo.PrimitivaCombination;
import com.ltmt.es.utils.castor.PrimitivaCastor;
import com.ltmt.es.utils.csvparser.CSVUtils;
import com.ltmt.es.validator.PrimitivaValidator;

/**
 * @author aruizred
 *
 */
public class appMain {
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
	
		try {
			
			PrimitivaValidator pValidator = new PrimitivaValidator();
			PrimitivaGenerator pGenerator = new PrimitivaGenerator();
			
			List<PrimitivaCombination> listHPComb = PrimitivaCastor.toPrimitivaCombinationList(SpringDataUtil.getRepository().findAll());
			pValidator.setListHPComb(listHPComb);
			
			List<PrimitivaCombination> listPCombFilter = new ArrayList<PrimitivaCombination>();
			
			
			PrimitivaCombination hPComb;
			List<Integer> listHComb = null;
		
//			CSVUtils pCSVUtils = new CSVUtils();
//			List<String[]> listTemplateCSV = pCSVUtils.parseCSV("muestraAll.csv");
//			for (String[] templateCSV : listTemplateCSV){
//				listHComb = new ArrayList<Integer>();
//				int aux1 = 0;
//				aux1 = Integer.parseInt(templateCSV[2]);
//				listHComb.add(aux1);
//				aux1 = Integer.parseInt(templateCSV[3]);
//				listHComb.add(aux1);
//				aux1 = Integer.parseInt(templateCSV[4]);
//				listHComb.add(aux1);
//				aux1 = Integer.parseInt(templateCSV[5]);
//				listHComb.add(aux1);
//				aux1 = Integer.parseInt(templateCSV[6]);
//				listHComb.add(aux1);
//				aux1 = Integer.parseInt(templateCSV[7]);
//				listHComb.add(aux1);
//				hPComb = new PrimitivaCombination(listHComb, Integer.parseInt(templateCSV[8]));
//				listHPComb.add(hPComb);
//			}
		
			List<Integer> combination = new ArrayList<Integer>();
			combination.add(2);
			combination.add(15);
			combination.add(22);
			combination.add(29);
			combination.add(30);
			combination.add(45);
			
			
			//PrimitivaCombination myPComb = new PrimitivaCombination(combination);
			PrimitivaCombination myPComb;
			System.out.println("Lanzando algoritmo LotoMatic!!... ");
			for (int i=0; i<10000000; i++){
				myPComb = pGenerator.generateNoRuleCombination();
				pValidator.statsValidator(myPComb);
				if (myPComb.getHitStats()[0]>5.5){
					listPCombFilter.add(myPComb);
				}
			}
			
			System.out.println("Total de numeros: "+listPCombFilter.size());
			for (PrimitivaCombination filterPComb : listPCombFilter){
				System.out.println(" - - - - - - - - - - - - - - -");
				System.out.println("Combinacion: "+filterPComb.getCombination());
				System.out.println(" - - - - - - - - - - - - - - -");
				System.out.println("3 Aciertos: "+filterPComb.getHitStats()[0]+"%");
				System.out.println("4 Aciertos: "+filterPComb.getHitStats()[1]+"%");
				System.out.println("5 Aciertos: "+filterPComb.getHitStats()[2]+"%");
				System.out.println("5+C Aciertos: "+filterPComb.getHitStats()[3]+"%");
				System.out.println("6 Aciertos: "+filterPComb.getHitStats()[4]+"%");
			}
			
			
		}catch (Exception ex){
			ex.printStackTrace();
		}
	}

}
